A requirement of any robust computing environment is to be able to recover from errors, such as device hardware errors (e.g., mechanical or electrical errors) or recording media errors. In order to recover from some device or media errors, it is necessary to restart a process, either from the beginning or from some other point within the process.
To facilitate recovery of a process, especially a long running process, intermediate results of the process are taken at particular intervals. This is referred to as checkpointing the process. Checkpointing enables the process to be restarted from the last checkpoint, rather than from the beginning of the process.
When a process is restarted, it is restored to the state it was in when the checkpoint was taken. Thus, any and all changes subsequent to the last checkpoint are undone. This includes any changes that have been made to attributes of external data, such as external functions and/or external variables, referenced by the process. Once the process is restored to its former state, it continues to execute from that point.
Based on the foregoing, a need exists for a restore capability that does not require that all information be restored to the point at which the checkpoint was taken. That is, a need exists for a capability that allows selected information to remain unrestored. In particular, a need exists for a restore capability that enables attributes of external data to remain unrestored, even though other components of the process are being restored.